package site.wanjiahao.sort.compare;

import site.wanjiahao.sort.Sort;

public class SelectSort<E extends Comparable<E>> extends Sort<E> {

    /**
     * 选择排序，选择当中最大的家伙，放入的最末尾，也可以放入最开头
     *      选择排序即可以是不稳定的排序算法
     */
    @Override
    protected void sort() {
        for (int end = array.length - 1; end >= 1; end--) {
            int maxIndex = 0;
            for (int begin = 1; begin <= end; begin++) {
                // 和最大元素比较大小
                if (cmp(begin, maxIndex) >= 0) {
                    maxIndex = begin;
                }
            }
            // 最大元素和相对最末尾元素交换位置
            swap(maxIndex, end);
        }
    }
}
